package galaxy.app.gate;

import galaxy.app.Galaxy;
import galaxy.app.NodeType;
import galaxy.app.consts.ScheduleType;
import galaxy.app.game.GameRpcRemote;
import galaxy.app.gate.client2gate.handler.LoginHandler;
import galaxy.app.gate.client2gate.handler.c1004login;
import galaxy.app.network.rpc.client.RpcClientSystem;
import galaxy.app.network.rpc.server.NettyRpcServerEntity;
import galaxy.app.network.websocket.WebSocketServerComponent;
import galaxy.app.route.RouteSystem;
import galaxy.kernel.Constants;
import galaxy.kernel.entity.Entity;

public class GalaxyGate {

    public static void main(String[] args) throws Exception {
        //config配置路径
        String configPath = System.getProperty(Constants.Property.CONFIG_DIR);
        //配置的环境名称
        String envName = System.getProperty(Constants.Property.ENV_NAME);
        //当前实例的结点id
        String nodeId = System.getProperty(Constants.Property.NODE_ID);
        configPath="./config";
        envName = "dev";
        nodeId="gate-1";
        
        Galaxy.createApp(configPath, envName, nodeId)
        .addDefaultSchedule()
        .addDispatch()
        .addEntity( p -> {
            Entity e = new Entity();
            e.addComponent(new WebSocketServerComponent());
            return e;
        })
        // .addRpcClient(NodeType.GAME_SERVER)
        .start(() -> {
                RouteSystem route = Galaxy.systems().get(RouteSystem.class);
                // BaseRoute
                LoginHandler baseroute = new LoginHandler();
                route.putAll(baseroute);
                // Galaxy.schedule().addDelaySeconds(ScheduleType.APP,()->{
                //     RpcClientSystem rpcC  = Galaxy.systems().get(RpcClientSystem.class);
                //     rpcC.asyncRandom(GameRpc.class, rpc_proxy->{
                //         rpc_proxy.test("galaxy",1001); // 将这个调用分解成 menthon args 
                //         },0,(result)->{
                //             System.out.println(result);
                //         });
                // }, 3);
            });
        }
    }
